package com.tools.config;

import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.SpecVersion;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.info.License;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;


@Configuration
public class Swagger3Config {



    @Bean
    public OpenAPI customOpenAPI() {

        // 定义认证方案（Bearer Token，适用于 SaToken、JWT 等）
        SecurityScheme securityScheme = new SecurityScheme()
                .type(SecurityScheme.Type.HTTP)  // HTTP 认证
                .scheme("bearer")                // 认证方案为 bearer
                .bearerFormat("JWT")             // 令牌格式（可选，仅作说明）
                .in(SecurityScheme.In.HEADER)    // 令牌放在请求头
                .name("token");                // 请求头参数名（与 SaToken 保持一致）

        // 全局应用认证方案
        SecurityRequirement securityRequirement = new SecurityRequirement().addList("BearerAuth");

        return new OpenAPI()
                .specVersion(SpecVersion.V31)
                .info(new Info()
                        .title("工具管理系统")
                        .version("1.0")
                        .description("工具管理相关的 API 文档")
                        .contact(new Contact().name("lijun").email("18142484@qq.com"))
                        .license(new License().name("Apache 2.0").url("https://springdoc.org"))
                        .termsOfService("https://swagger.io/terms/")
                )
                .components(new Components()
                        .addSecuritySchemes("BearerAuth", securityScheme))  // 注册认证方案
                .addServersItem(new Server().url("http://localhost:8088").description("本地开发环境"));
    }
}

